package map;

import java.util.HashMap;
import java.util.Map;

/**
 * 统计字符串中每个字符出现的次数
 */
public class Test {
    public static void main(String[] args) {
        String line = "i love java! thinking in java! hello world!";
        Map<Character, Integer> map = new HashMap<>();
        /*
            Map
            key(char)    value(int)
            思路:
            顺序获取line中每一个字符
            获取到一个字符后:
                首先判断该字符作为key在Map中是否存在
                不存在:说明该字符第一次出现，将字符作为key，value存入1。
                存在:说明该字符不是第一次数显，要将该字符出现次数+1
                    用该字符作为key去Map中将value取出，然后对value+1再放回去
         */
//        for(int i=0;i<line.length();i++){
//            char c = line.charAt(i);
//            if(map.containsKey(c)){
//                //存在说明出现过
//                int num = map.get(c);
//                num++;
//                map.put(c,num);
//            }else{
//                //不存在说明第一次出现
//                map.put(c,1);
//            }
//        }
        for(char c : line.toCharArray()){
            map.put(c,map.containsKey(c)?map.get(c)+1:1);
        }
        /*
            统计后输出每个字符出现的次数，格式如下:
            i:4
            a:4
            o:3
            ...
         */
        map.forEach((k,v)-> System.out.println("字符["+k+"]出现了:"+v+"次"));
    }
}
